home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / gnu / emacs_src_18_58.lha / emacs-18.58 / lisp / rnews.elc < prev    next >
Text File  |  1992-02-21  |  24KB  |  379 lines

  1.  
  2. (provide (quote rnews))
  3.  
  4. (require (quote mail-utils))
  5.  
  6. (autoload (quote rmail-output) "rmailout" "\
  7. Append this message to Unix mail file named FILE-NAME." t)
  8.  
  9. (autoload (quote news-reply) "rnewspost" "\
  10. Compose and post a reply to the current article on USENET.
  11. While composing the reply, use \\[mail-yank-original] to yank the original
  12. message into it." t)
  13.  
  14. (autoload (quote news-mail-other-window) "rnewspost" "\
  15. Send mail in another window.
  16. While composing the message, use \\[mail-yank-original] to yank the
  17. original message into it." t)
  18.  
  19. (autoload (quote news-post-news) "rnewspost" "\
  20. Begin editing a new USENET news article to be posted." t)
  21.  
  22. (autoload (quote news-mail-reply) "rnewspost" "\
  23. Mail a reply to the author of the current article.
  24. While composing the reply, use \\[mail-yank-original] to yank the original
  25. message into it." t)
  26.  
  27. (defvar rmail-last-file (expand-file-name "~/mbox.news"))
  28.  
  29. (defvar news-startup-file "$HOME/.newsrc" "\
  30. Contains ~/.newsrc")
  31.  
  32. (defvar news-certification-file "$HOME/.news-dates" "\
  33. Contains ~/.news-dates")
  34.  
  35. (defvar news-ignored-headers "^Path:\\|^Posting-Version:\\|^Article-I.D.:\\|^Expires:\\|^Date-Received:\\|^References:\\|^Control:\\|^Xref:\\|^Lines:\\|^Posted:\\|^Relay-Version:\\|^Message-ID:\\|^Nf-ID:\\|^Nf-From:\\|^Approved:\\|^Sender:" "\
  36. All random fields within the header of a message.")
  37.  
  38. (defvar news-mode-map nil)
  39.  
  40. (defvar news-read-first-time-p t)
  41.  
  42. (defvar news-user-group-list nil)
  43.  
  44. (defvar news-current-news-group nil)
  45.  
  46. (defvar news-current-group-begin nil)
  47.  
  48. (defvar news-current-group-end nil)
  49.  
  50. (defvar news-current-certifications nil "\
  51. An assoc list of a group name and the time at which it is
  52. known that the group had no new traffic")
  53.  
  54. (defvar news-current-certifiable nil "\
  55. The time when the directory we are now working on was written")
  56.  
  57. (defvar news-message-filter nil "\
  58. User specifiable filter function that will be called during
  59. formatting of the news file")
  60.  
  61. (defvar news-list-of-files nil "\
  62. Global variable in which we store the list of files
  63. associated with the current newsgroup")
  64.  
  65. (defvar news-list-of-files-possibly-bogus nil "\
  66. variable indicating we only are guessing at which files are available.
  67. Not currently used.")
  68.  
  69. (defvar news-group-article-assoc nil)
  70.  
  71. (defvar news-current-message-number 0 "\
  72. Displayed Article Number")
  73.  
  74. (defvar news-total-current-group 0 "\
  75. Total no of messages in group")
  76.  
  77. (defvar news-unsubscribe-groups nil)
  78.  
  79. (defvar news-point-pdl nil "\
  80. List of visited news messages.")
  81.  
  82. (defvar news-no-jumps-p t)
  83.  
  84. (defvar news-buffer nil "\
  85. Buffer into which news files are read.")
  86.  
  87. (defmacro news-push (item ref) (byte-code "Âà   EE‡" [ref item setq cons] 5))
  88.  
  89. (defmacro news-cadr (x) (byte-code "ÁÂDD‡" [x car cdr] 3))
  90.  
  91. (defmacro news-cdar (x) (byte-code "ÁÂDD‡" [x cdr car] 3))
  92.  
  93. (defmacro news-caddr (x) (byte-code "ÁÂÂDDD‡" [x car cdr] 4))
  94.  
  95. (defmacro news-cadar (x) (byte-code "ÁÂÁDDD‡" [x car cdr] 4))
  96.  
  97. (defmacro news-caadr (x) (byte-code "ÁÁÂDDD‡" [x car cdr] 4))
  98.  
  99. (defmacro news-cdadr (x) (byte-code "ÁÂÁDDD‡" [x cdr car] 4))
  100.  
  101. (defmacro news-wins (pfx index) (byte-code "ÂÃÄÅ    DFD‡" [pfx index file-exists-p concat "/" int-to-string] 6))
  102.  
  103. (defvar news-max-plausible-gap 2 "\
  104. * In an rnews directory, the maximum possible gap size.
  105. A gap is a sequence of missing messages between two messages that exist.
  106. An empty file does not contribute to a gap -- it ends one.")
  107.  
  108. (defun news-find-first-and-last (prefix base) (byte-code "ÂÃÄ    !Q!…Å    Æ#Å    Ç#B‡" [prefix base file-exists-p "/" int-to-string news-find-first-or-last -1 1] 8))
  109.  
  110. (defmacro news-/ (a1 a2) (byte-code "ÂÃÄÅ\"!ƒà   E‚\"ÆÇÈEÉÃÉD    EDà   EF‡" [a1 a2 zerop / -1 2 if < 0 -] 8))
  111.  
  112. (defun news-find-first-or-last (pfx base dirn) (byte-code "    Æ
  113. ÇÈ     \\!Q!…É    Ê\"‰ˆ‚ˆË    Ê\"‰ˆË    Ê\"Ì Í\"…LÆ
  114. ÇÈÎ      #!Q!…A     \\‰ˆË Ê\"‰ˆ‚&)ˆÉ\"Ì Í\"…gÆ
  115. ÇÈÎ      #!Q!?…s Z‰ˆ‚Sˆ ÍUƒ€     \\‚‰Ï
  116. Î      ##))‡" [original-dir dirn pfx base offset news-max-plausible-gap file-exists-p "/" int-to-string * 2 / /= 0 + news-find-first-or-last] 21))
  117.  
  118. (defun rnews nil "\
  119. Read USENET news for groups for which you are a member and add or
  120. delete groups.
  121. You can reply to articles posted and send articles to any group.
  122.  
  123. Type \\[describe-mode] once reading news to get a list of rnews commands." (interactive) (byte-code "ĈƠÇÈ!ˆÉÊË!‰!ˆÌ ˆ‰ˆÄ‰ˆÍ ˆÅ‰ˆÎÅ!ˆÏÐ!ˆÑÒ!ˆÓ ˆÔ ˆÕ )‡" [last-buffer news-buffer news-buffer-save buffer-read-only nil t buffer-name make-local-variable rmail-last-file switch-to-buffer get-buffer-create "*news*" news-mode erase-buffer set-buffer-modified-p sit-for 0 message "Getting new USENET news..." news-set-mode-line news-get-certifications news-get-new-news] 13))
  124.  
  125. (defun news-group-certification (group) (byte-code "Âà   \"!‡" [group news-current-certifications cdr-safe assoc] 4))
  126.  
  127. (defun news-set-current-certifiable nil (byte-code "    ÄÅÆ
  128. #PÇÈÉ!†!8‰)‡" [file news-path news-current-news-group news-current-certifiable string-subst-char 47 46 5 file-attributes file-symlink-p] 5))
  129.  
  130. (defun news-get-certifications nil (byte-code "ŠÁ‹)‡" [news-current-certifications ((byte-code "ÁÂÃď!‰‡" [news-current-certifications car-safe var (byte-code "à   !Ä!Å!…Æ
  131. Ç\"ˆÈŽÉÊ !)*‡" [file news-certification-file buf substitute-in-file-name find-file-noselect file-exists-p switch-to-buffer norecord ((byte-code "Á!‡" [buf kill-buffer] 2)) read-from-string buffer-string] 7) ((error (byte-code "À‡" [nil] 1)))] 4))] 1))
  132.  
  133. (defun news-write-certifications nil (byte-code "ŠÃ‹)‡" [news-current-certifications buf news-certification-file ((byte-code "ÐÄ!‘ˆÅÃ!Æ    !ˆÇÈ
  134. !!ˆÉ    !)‡" [news-current-certifications buf news-certification-file "*CeRtIfIcAtIoNs*" print get-buffer switch-to-buffer write-file substitute-in-file-name kill-buffer] 7))] 1))
  135.  
  136. (defun news-set-current-group-certification nil (byte-code "Ä    
  137. \"ƒÅ \"‚     B
  138. B‰)‡" [cgc news-current-news-group news-current-certifications news-current-certifiable assoc setcdr] 4))
  139.  
  140. (defun news-set-minor-modes nil "\
  141. Creates a minor mode list that has group name, total articles,
  142. and attribute for current article." (byte-code "Ä    Å
  143. Æ RBC‰ˆÇÈ!†‰‡" [news-minor-modes news-current-message-number news-total-current-group minor-modes foo "/" news-get-attribute-string boundp minor-mode-alist] 6))
  144.  
  145. (defun news-set-message-counters nil "\
  146. Scan through current news-groups filelist to figure out how many messages
  147. are there. Set counters for use with minor mode display." (byte-code "?…‰‡" [news-list-of-files news-current-message-number 0] 2))
  148.  
  149. (if news-mode-map nil (setq news-mode-map (make-keymap)) (suppress-keymap news-mode-map) (define-key news-mode-map "." (quote beginning-of-buffer)) (define-key news-mode-map " " (quote scroll-up)) (define-key news-mode-map "" (quote scroll-down)) (define-key news-mode-map "n" (quote news-next-message)) (define-key news-mode-map "c" (quote news-make-link-to-message)) (define-key news-mode-map "p" (quote news-previous-message)) (define-key news-mode-map "j" (quote news-goto-message)) (define-key news-mode-map "q" (quote news-exit)) (define-key news-mode-map "e" (quote news-exit)) (define-key news-mode-map "j" (quote news-goto-news-group)) (define-key news-mode-map "n" (quote news-next-group)) (define-key news-mode-map "p" (quote news-previous-group)) (define-key news-mode-map "l" (quote news-list-news-groups)) (define-key news-mode-map "?" (quote describe-mode)) (define-key news-mode-map "g" (quote news-get-new-news)) (define-key news-mode-map "f" (quote news-reply)) (define-key news-mode-map "m" (quote news-mail-other-window)) (define-key news-mode-map "a" (quote news-post-news)) (define-key news-mode-map "r" (quote news-mail-reply)) (define-key news-mode-map "o" (quote news-save-item-in-file)) (define-key news-mode-map "" (quote rmail-output)) (define-key news-mode-map "t" (quote news-show-all-headers)) (define-key news-mode-map "x" (quote news-force-update)) (define-key news-mode-map "A" (quote news-add-news-group)) (define-key news-mode-map "u" (quote news-unsubscribe-current-group)) (define-key news-mode-map "U" (quote news-unsubscribe-group)) (define-key news-mode-map "" (quote news-caesar-buffer-body)))
  150.  
  151. (defun news-mode nil "\
  152. News Mode is used by M-x rnews for reading USENET Newsgroups articles.
  153. New readers can find additional help in newsgroup: news.announce.newusers .
  154. All normal editing commands are turned off.
  155. Instead, these commands are available:
  156.  
  157. .    move point to front of this news article (same as Meta-<).
  158. Space    scroll to next screen of this news article.
  159. Delete  scroll down previous page of this news article.
  160. n    move to next news article, possibly next group.
  161. p    move to previous news article, possibly previous group.
  162. j    jump to news article specified by numeric position.
  163. M-j     jump to news group.
  164. M-n     goto next news group.
  165. M-p     goto previous news group.
  166. l       list all the news groups with current status.
  167. ?       print this help message.
  168. C-c C-r caesar rotate all letters by 13 places in the article's body (rot13).
  169. g       get new USENET news.
  170. f       post a reply article to USENET.
  171. a       post an original news article.
  172. A       add a newsgroup. 
  173. o    save the current article in the named file (append if file exists).
  174. C-o    output this message to a Unix-format mail file (append it).
  175. c       \"copy\" (actually link) current or prefix-arg msg to file.
  176.     warning: target directory and message file must be on same device
  177.         (UNIX magic)
  178. t       show all the headers this news article originally had.
  179. q    quit reading news after updating .newsrc file.
  180. e    exit updating .newsrc file.
  181. m    mail a news article.  Same as C-x 4 m.
  182. x       update last message seen to be the current message.
  183. r    mail a reply to this news article.  Like m but initializes some fields.
  184. u       unsubscribe from current newsgroup.
  185. U       unsubscribe from specified newsgroup." (interactive) (byte-code "ˈ̠ˆÍÀ!ˆÁ‰ˆÍÎ!ˆÍÂ!ˆÏ‰ˆÍÃ!ˆÏ‰ˆÍÐ!ˆÍÑ!ˆÍÄ!ˆÒ‰ˆÍÓ!ˆÔ‰ˆÕÖ!ƒF׉‚J؉ˆÙ ˆÚ!ˆÛ!ˆ
  186. ‰    ˆÜÝ!‡" [news-read-first-time-p t news-current-group-begin news-current-message-number version-control major-mode mode-name text-mode-syntax-table news-mode-map local-abbrev-table text-mode-abbrev-table nil kill-all-local-variables make-local-variable news-current-news-group 0 news-total-current-group news-buffer-save never news-point-pdl news-mode boundp minor-mode-alist ("NEWS" news-minor-modes) "NEWS" news-set-mode-line set-syntax-table use-local-map run-hooks news-mode-hook] 15))
  187.  
  188. (defun string-subst-char (new old string) (byte-code "ÄÅÆ    !!
  189. ÇÄO‰ˆÈ    
  190. \"‰… 
  191. Iˆ‚)ˆ
  192. ‡" [index old string new nil regexp-quote char-to-string 0 string-match] 7))
  193.  
  194. (defmacro news-update-message-read (ngroup nno) (byte-code "ÂÃÄÅED    E‡" [ngroup nno setcar news-cdadr assoc news-group-article-assoc] 5))
  195.  
  196. (defun news-parse-range (number-string) "\
  197. Parse string representing range of numbers of he form <a>-<b>
  198. to a list (a . b)" (byte-code "Âà   \"ƒÄ    ÅO!Ä    TÆO!B‚#Ä    !‰ˆB)‡" [n number-string string-match "-" string-to-int 0 nil] 7))
  199.  
  200. (defun news-get-new-news nil "\
  201. Get new USENET news, if there is any for the current user." (interactive) (byte-code "ˆ??…
  202. ΠˆÂ‰ˆÂ‰ˆÏÐ \"ˆÑ !ÂŠÒ !ÂÂÂÂ
  203.     qˆÓbˆÔÕÂË#…•`‰ˆÖ ˆ`‰ˆ× ˆ`‰    ˆØÙZ\"‰
  204. ˆÚØ    \"! Û
  205.     \"ƒzÏÜ
  206. \"‚
  207. B
  208.  @ A AED    B‰)ˆ‚7ˆÝ!-)ˆÞ!‰ˆÏß!ˆà!ˆ‰ˆ…ºá@Â\"?…ÅA‰ˆ‚°ˆ?ƒÑÏâ!‚ÔÏã!*‡" [news-user-group-list news-group-article-assoc nil news-startup-file file temp-user-groups newsrcbuf start end endofline tem t range news-buffer news-update-newsrc-file message "Looking up %s file..." substitute-in-file-name find-file-noselect 0 search-forward ": " beginning-of-line end-of-line buffer-substring 2 news-parse-range assoc "You are subscribed twice to %s; I ignore second" kill-buffer nreverse "Prefrobnicating..." switch-to-buffer news-read-files-into-buffer "No news is good news." ""] 20))
  209.  
  210. (defun news-list-news-groups nil "\
  211. Display all the news groups to which you belong." (interactive) (byte-code "ĈǐŠqˆÈcˆÉcˆ
  212. Ä    …MÊ    @\"@cˆ ƒ)˂*ÌjˆÍA@A@!cˆ ƒ>Îc‚@Ïjˆ    A ?‰)ˆ‚*)‘‡" [standard-output temp news-user-group-list flag nil item news-group-article-assoc "*Newsgroups*" "News Group        Msg No.       News Group        Msg No.
  213. " "-------------------------       -------------------------
  214. " assoc 52 20 int-to-string "
  215. " 33] 6))
  216.  
  217. (defun news-set-mode-line nil "\
  218. Set mode line string to something useful." (byte-code "ÆÇ    !ƒÈ    !‚ÉÊÇ
  219. !ƒÈ
  220. !‚
  221. R‰ˆË ÌÍÍÎ GZ]OQ‰ˆÏÅ!ˆÐÍ!‡" [mode-line-process news-current-message-number news-current-group-end mode-line-buffer-identification news-current-news-group t " " integerp int-to-string "??" "/" "NEWS: " "                 " 0 17 set-buffer-modified-p sit-for] 11))
  222.  
  223. (defun news-goto-news-group (gp) "\
  224. Takes a string and goes to that news group." (interactive (byte-code "ÁÂ\"C‡" [news-group-article-assoc completing-read "NewsGroup: "] 3)) (byte-code "ˆÃÄ    \"ˆÅ    !ˆÃÆ    \"‡" [news-group-article-assoc gp nil message "Jumping to news group %s..." news-select-news-group "Jumping to news group %s... done."] 5))
  225.  
  226. (defun news-select-news-group (gp) (byte-code "Ç    
  227. \"?ƒÈÉ \"‚&ÊÇ
  228. \"A@A@A\"ˆË@Æ\"ˆÌ )‡" [grp gp news-group-article-assoc news-startup-file news-current-news-group news-point-pdl nil assoc error "Group not subscribed to in file %s." setcar news-read-files-into-buffer news-set-mode-line] 7))
  229.  
  230. (defun news-goto-message (arg) "\
  231. Goes to the article ARG in current newsgroup." (interactive "p") (byte-code "ˆ?…ÃÄÅ\"‰ˆÆ    !‡" [current-prefix-arg arg nil read-no-blanks-input "Go to article: " "" news-select-message] 3))
  232.  
  233. (defun news-select-message (arg) (byte-code ";…
  234. É!‰ˆ
  235. ÊËÌ #ÍR @A>A@†!ÎU…*Ï @\"ˆ‰ˆÐ    !ƒCÈÑ    !ˆÒ )‚JÒ ˆÓÔ\")‡" [arg file news-path news-current-news-group news-point-pdl news-list-of-files news-current-message-number buffer-read-only nil string-to-int string-subst-char 47 46 "/" 0 setcdr file-exists-p news-read-in-file news-set-mode-line error "Article %d nonexistent"] 10))
  236.  
  237. (defun news-force-update nil "\
  238. updates the position of last article read in the current news group" (interactive) (byte-code "ˆÃ@    \"ˆÄÅ    \"‡" [news-point-pdl news-current-message-number nil setcdr message "Updated to %d"] 4))
  239.  
  240. (defun news-next-message (arg) "\
  241. Move ARG messages forward within one newsgroup.
  242. Negative ARG moves backward.
  243. If ARG is 1 or -1, moves to next or previous newsgroup if at end." (interactive "p") (byte-code "Ȉ    
  244. \\ W† Vƒ1    ÉUƒ Ê ˆË ‚.    ÌUƒ+Í ‚.ÎÏ!‚TÐ
  245. \"    ÑWƒKÒ    [SA@8!‚SÒ    S@8!))‡" [no arg news-current-message-number news-current-group-begin news-current-group-end t plist news-list-of-files nil 1 news-set-current-group-certification news-next-group -1 news-previous-group error "Article out of range" news-get-motion-lists 0 news-select-message] 9))
  246.  
  247. (defun news-previous-message (arg) "\
  248. Move ARG messages backward in current newsgroup.
  249. With no arg or arg of 1, move one message
  250. and move to previous newsgroup if at beginning.
  251. A negative ARG means move forward." (interactive "p") (byte-code "ÁˆÂ[!‡" [arg nil news-next-message] 2))
  252.  
  253. (defun news-move-to-group (arg) "\
  254. Given arg move forward or backward to a new newsgroup." (byte-code "    Æ \"ÇÈWƒ![S
  255. A@8‰†ÉÊ!‚-
  256. @8‰†-ÉË!ˆÌ !*)‡" [cg news-current-news-group plist news-user-group-list ngrp arg news-get-motion-lists nil 0 error "No previous news groups" "No more news groups" news-select-news-group] 5))
  257.  
  258. (defun news-next-group nil "\
  259. Moves to the next user group." (interactive) (byte-code "ÁˆÂÃ!ˆ?…ÂÃ!ˆ‚‡" [news-list-of-files nil news-move-to-group 0] 4))
  260.  
  261. (defun news-previous-group nil "\
  262. Moves to the previous user group." (interactive) (byte-code "ÁˆÂÃ!ˆ?…ÂÃ!ˆ‚‡" [news-list-of-files nil news-move-to-group -1] 4))
  263.  
  264. (defun news-get-motion-lists (arg listy) "\
  265. Given a msgnumber/group this will return a list of two lists;
  266. one for moving forward and one for moving backward." (byte-code "    ÃÄō*‡" [temp listy result nil out (byte-code "…(Ã@    \"ƒÄÅA
  267. CB\"‚$Æ@C
  268. \"‰ˆA‰ˆ‚‡" [temp arg result equal throw out nconc] 6)] 2))
  269.  
  270. (defun news-read-in-file (filename) (byte-code " ˆ`à   !ˆÄ ˆbˆÅÆ!ˆmƒÇÈ!‚b)‡" [start filename erase-buffer insert-file-contents news-convert-format forward-line 1 message "(Empty file?)"] 6))
  271.  
  272. (defun news-convert-format nil (byte-code "ŠŒ`ÄÆǏÄÄ    …@È    \"ˆbˆÉÊÄÅ#‰ˆ
  273. ?…' …9bˆÉË!ˆÌ ˆÍ ˆÍ ˆÎ!ˆb,))‡" [start end has-from has-date nil t (byte-code "ÀÁ!ˆ`‡" [search-forward "
  274.  
  275. "] 2) ((error (byte-code "À‡" [nil] 1))) narrow-to-region search-forward "
  276. From:" "
  277. Date:" beginning-of-line kill-line news-delete-headers] 8))
  278.  
  279. (defun news-show-all-headers nil "\
  280. Redisplay current news item with all original headers" (interactive) (byte-code "ˆÂÂÆ ˆÇ ˆÈ ÉÊË #ÌÍ!R!*‡" [news-ignored-headers buffer-read-only nil news-path news-current-news-group news-current-message-number erase-buffer news-set-mode-line news-read-in-file string-subst-char 47 46 "/" int-to-string] 9))
  281.  
  282. (defun news-delete-headers (pos) (byte-code "bˆ    ;…#Ä    ÂÃ#…#Å ˆÆ`ÄÇ!ˆÈÉ!ˆ`\"ˆ‚‡" [pos news-ignored-headers nil t re-search-forward beginning-of-line delete-region "
  283. [^     ]" forward-char -1] 8))
  284.  
  285. (defun news-exit nil "\
  286. Quit news reading session and update the .newsrc file." (interactive) (byte-code "ÈÄÅ!ƒ0ÆÇ\"ˆÈ ˆÉ ˆÆÊ\"ˆÆË!ˆÌÍ!…%Íp!ˆÎ    !ˆÃ‰‚3ÆÏ!‡" [news-startup-file news-buffer-save news-user-group-list nil y-or-n-p "Do you really wanna quit reading news ? " message "Updating %s..." news-update-newsrc-file news-write-certifications "Updating %s... done" "Now do some real work" fboundp bury-buffer switch-to-buffer ""] 11))
  287.  
  288. (defun news-update-newsrc-file nil "\
  289. Updates the .newsrc file in the users home dir." (byte-code "ËÌ    !! ÈŠ??…ÍÎ\"A@A@A\"ˆÏ!ˆ
  290. …{Î
  291. @\"‰ˆ A@A@ A@AA@UƒDȂrÐbˆÑ @ÒPÈÉ#ƒXÓÈ!‚aÔ @Õ\"ˆÖ×!ˆÔØ A@@!ÙØ A@A@!#ˆ
  292. A‰ˆ‚$ˆ
  293. …½Î
  294. @\"‰ˆÐbˆÑ @ÒPÈÉ#…²ÖÚ!ˆÓÈ!ˆÔÛØ A@@!ÙØ A@A@!$ˆ
  295. A‰
  296. ˆ‚|ˆÜ ˆÝp!)+‡" [newsrcbuf news-startup-file tem news-user-group-list group news-current-news-group news-group-article-assoc news-point-pdl nil t news-unsubscribe-groups find-file-noselect substitute-in-file-name setcar assoc switch-to-buffer 0 search-forward ": " kill-line insert ": 
  297. " backward-char 1 int-to-string "-" 2 "! " save-buffer kill-buffer] 25))
  298.  
  299. (defun news-unsubscribe-group (group) "\
  300. Removes you from newgroup GROUP." (interactive (byte-code "ÁÂ\"C‡" [news-group-article-assoc completing-read "Unsubscribe from group: "] 3)) (byte-code "ˆà   !‡" [news-group-article-assoc group nil news-unsubscribe-internal] 2))
  301.  
  302. (defun news-unsubscribe-current-group nil "\
  303. Removes you from the newsgroup you are now reading." (interactive) (byte-code "ÁˆÂÃ!… Ä!‡" [news-current-news-group nil y-or-n-p "Do you really want to unsubscribe from this group ? " news-unsubscribe-internal] 3))
  304.  
  305. (defun news-unsubscribe-internal (group) (byte-code "Æ    
  306. \"ƒ,     B‰ˆÇÆ    
  307. \"A@A @A\"ˆÈ    \"…%É ˆÊË!‚0ÌÍ    \")‡" [tem group news-group-article-assoc news-unsubscribe-groups news-point-pdl news-current-news-group assoc setcar equal news-next-group message "" error "Not subscribed to group: %s"] 9))
  308.  
  309. (defun news-save-item-in-file (file) "\
  310. Save the current article that is being read by appending to a file." (interactive "FSave item in file: ") (byte-code "ÁˆÂed#‡" [file nil append-to-file] 4))
  311.  
  312. (defun news-get-pruned-list-of-files (gp-list end-file-no) "\
  313. Given a news group it finds all files in the news group.
  314. The arg must be in slashified format.
  315. Using ls was found to be too slow in a previous version." (byte-code "    …ÌÍ Î
  316. !\"…ÄƉ?…íÏÐÑ
  317. #PÄ        …:ÒÓÔ    !Q!…:Õ    Ö#
  318. Æĉˆ
  319. ƒlÆ
  320. ‰ ˆ
  321.     V…g
  322. B‰ˆ
  323. S‰
  324. ˆ‚Oˆ ‚ì×!?†yØ!?ƒ€Ä‚ìÙÚۏ‰ˆ ‰    ˆ    …ÄÜÝ    @\"?†®×Ó    @Q!†®Þ    @!    X…¹ß    @ \"‰ˆ    A‰    ˆ‚Œˆ ?ƒÓà‰ ˆÄ‚ìáÞ \"‰ˆâ ã\"‰ˆä GS\"‰ ˆ +†ö堈Ä)‡" [answer end-file-no gp-list news-list-of-files nil news-list-of-files-possibly-bogus t file-directory news-path tem last-winner news-current-group-end equal news-set-current-certifiable news-group-certification string-subst-char 47 46 file-exists-p "/" int-to-string news-find-first-or-last 1 file-directory-p file-readable-p error (byte-code "Á!‡" [file-directory directory-files] 2) ((file-error (byte-code "ÃÄ8Å\"ƒÆÇ    \"‚ÈÉA\"ˆÂ‡" [error gp-list nil string= 2 "permission denied" message "Newsgroup %s is read-protected" signal file-error] 5))) string-match "^[0-9]*$" string-to-int delq 0 mapcar sort < elt news-set-current-group-certification] 18))
  325.  
  326. (defun news-read-files-into-buffer (group reversep) (byte-code "Р   
  327. \"A@@A@Æ    ‰ˆÆ‰ˆÆ‰    ˆÑ ˆÒ     \"ˆÑ ˆ@A@BC‰
  328. ˆ ?ƒTÓ ˆ ‰    ˆ ‰ ˆ ‰ˆÑ ˆÆ‚œ @‰ ˆƒh    ‰‚~ @ V…xÔ
  329. @ @\"ˆ ‰ˆÕ ˆÑ ˆÖ×ØÙ    #ÚÛ!R!ˆÕ ˆÑ ˆÏ,‡" [files-start-end group news-group-article-assoc start-file-no end-file-no buffer-read-only nil news-current-news-group news-current-message-number news-current-group-end news-point-pdl news-list-of-files news-current-group-begin reversep news-path t assoc news-set-mode-line news-get-pruned-list-of-files erase-buffer setcdr news-set-message-counters news-read-in-file string-subst-char 47 46 "/" int-to-string] 16))
  330.  
  331. (defun news-add-news-group (gp) "\
  332. Resubscribe to or add a USENET news group named GROUP (a string)." (interactive "sAdd news group: ") (byte-code "ƈ    ÍÎÏ
  333. #PŠÐ
  334. \"?ƒ·ÑÒ!!Ó!ƒ¯Ô !ˆÕbˆÖ
  335. ×PÆÇ#ƒBØÙ
  336. \"ˆÚÛ!ˆÜÝ!ˆÞc‚NØß
  337. \"ˆà ˆá
  338. â\"ˆã
  339. ÆÇ#ˆÆÆÆÆ 
  340.     ÖäÆÇ#ˆ`‰    ˆå ˆ`‰ˆæ ˆ`‰
  341. ˆç    ÛZ\"‰ ˆèç    
  342. \"!   @ A AED B‰),ˆé ˆêp!‚³Øë
  343. \")‚»Øì
  344. \"))‡" [file-dir news-path gp news-group-article-assoc newsrcbuf news-startup-file nil t start end endofline tem range string-subst-char 47 46 assoc find-file-noselect substitute-in-file-name file-directory-p switch-to-buffer 0 search-forward "! " message "Re-subscribing to group %s." backward-char 2 delete-char 1 ":" "Added %s to your list of newsgroups." end-of-buffer insert ": 1-1
  345. " search-backward ": " beginning-of-line end-of-line buffer-substring news-parse-range save-buffer kill-buffer "Newsgroup %s doesn't exist." "Already subscribed to group %s."] 26))
  346.  
  347. (defun news-make-link-to-message (number newname) "\
  348. Forges a link to an rnews message numbered number (current if no arg)
  349. Good for hanging on to a message that might or might not be
  350. automatically deleted." (interactive "P
  351. FName to link to message: ") (byte-code "ňÆÇÈÉ    #Ê
  352. ƒË
  353. !‚ R \"‡" [news-path news-current-news-group number news-current-message-number newname nil add-name-to-file string-subst-char 47 46 "/" prefix-numeric-value] 7))
  354.  
  355. (defun caesar-region (&optional n) "\
  356. Caesar rotation of region by N, default 13, for decrypting netnews." (interactive (byte-code "ƒ Â!C‚ÁC‡" [current-prefix-arg nil prefix-numeric-value] 2)) (byte-code "ÁˆÌ
  357. !?ƒ͉‚'
  358. ÎWƒ!ÏÐ
  359. [Ï\"Z‰‚'Ð
  360. Ï\"‰ˆÑ
  361. !?…ðÒÄ!?†>Ó ÔHÔ
  362. \\\"…¤ÎÕÁÖ×!ˆØÙÎ\"‰ˆÙW…g IˆT‰ˆ‚TˆPÚ!ΉˆÏW…Ÿ Ô\\
  363. \\HIˆ Û\\
  364. \\HIˆT‰ˆ‚yˆÖÜ!+ˆÝ Þ ÎÁÁ 
  365.     ß    \"‰
  366. ˆ
  367. G‰ ˆ W…à
  368. 
  369. HHIˆT‰ˆ‚ƈbˆà    \"ˆ
  370. c-‡" [current-prefix-arg nil n t caesar-translate-table i lower upper from to str len numberp 13 0 26 % zerop boundp /= 97 "abcdefghijklmnopqrstuvwxyz" message "Building caesar-translate-table..." make-vector 256 upcase 65 "Building caesar-translate-table... done" region-beginning region-end buffer-substring kill-region] 19))
  371.  
  372. (defun news-caesar-buffer-body (&optional rotnum) "\
  373. Caesar rotates all letters in the current buffer by 13 places.
  374. Used to encode/decode possibly offensive messages (commonly in net.jokes).
  375. With prefix arg, specifies the number of places to rotate each letter forward.
  376. Mail and USENET news headers are not rotated." (interactive (byte-code "ƒ Â!C‚ÁC‡" [current-prefix-arg nil prefix-numeric-value] 2)) (byte-code "ÁˆŠ Á‰ˆÈebˆÉÊË Ì\"ƒ͂ÊQÁÆ#ƒ'`‚(e!ˆdbˆÎ!ˆ
  377. ‰))‡" [current-prefix-arg nil buffer-status buffer-read-only major-mode mail-header-separator t rotnum set-mark search-forward "
  378. " equal news-mode "" caesar-region] 6))
  379.